package com.citms.common.validator;

import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;

import com.citms.common.CodeMsg;
import com.citms.exception.BussinessException;

/**
 * hibernate-validator校验工具类
 *
 * 参考文档：http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/
 *
 * @author denghq
 * 
 * @date 2018/10/29
 */
public class ValidatorUtils {
    private static Validator validator;

    static {
        validator = Validation.buildDefaultValidatorFactory().getValidator();
    }

    /**
     * 校验对象
     * @param object        待校验对象
     * @param groups        待校验的组
     * @throws RRException  校验不通过，则报RRException异常
     */
    public static void validateEntity(Object object, Class<?>... groups)
            throws BussinessException {
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
        if (!constraintViolations.isEmpty()) {
            StringBuilder msg = new StringBuilder();

            int i = 1;
            int size = constraintViolations.size();
            for(ConstraintViolation<Object> constraint:  constraintViolations){
            	
                msg.append(constraint.getMessage());
                if(i<size) {
                	i++;
                	msg.append("|");
                }
            }
            throw new BussinessException(CodeMsg.PARAMETER_ERROR.fillArgs(msg.toString()));
        }
    }
}
